﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sociedad.BL;
using Sociedad.DAL;

public partial class SOA_DesignacionSOA_SolicitudDesignacion_Manten : System.Web.UI.Page
{
    ParametroBL blParam = new ParametroBL();
    EntidadBL blEnt = new EntidadBL();
    SolicitudDesignacionBL blSolic = new SolicitudDesignacionBL();
    soa_SolicitudDesignacion beSolic = new soa_SolicitudDesignacion();

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                Inicializar();
            }
            else
            {
                lblMsj.Visible = false;
            }
        }
        catch (Exception ex)
        {
            lblMsj.Text = "Se produjo un error al intentar cargar los datos, volver a intentar.";
            lblMsj.ForeColor = System.Drawing.Color.Red;
            lblMsj.Visible = true;              
        }
    }

    public void Inicializar()
    {
        txtCodigoUO.Text = Session[Constantes.session_CodUniOrg].ToString();
        txtNombreUO.Text = Session[Constantes.session_NomUniOrg].ToString();
        txtCodigo.Text = Session[Constantes.session_Codigo_SolicitudDesignacion].ToString();

        // Cargar Tipo de Auditoria
        List<Soa_Parametros> lstParam1 = new List<Soa_Parametros>();
        Soa_Parametros param1 = new Soa_Parametros();
        param1.cprm_Codigo = "0";
        param1.cprm_Descripcion = "<Selec>";
        lstParam1 = blParam.Listar_Parametros("05");
        List<Soa_Parametros> lstParamNew1 = new List<Soa_Parametros>();
        lstParamNew1.Add(param1);
        for (int i = 1; i <= lstParam1.Count(); i++)
        {
            lstParamNew1.Add(lstParam1[i - 1]);
        }
        ddlTipAud.DataSource = lstParamNew1;
        ddlTipAud.DataTextField = "cprm_Descripcion";
        ddlTipAud.DataValueField = "cprm_Codigo";
        ddlTipAud.DataBind();

        if (String.IsNullOrEmpty(txtCodigo.Text))
        {
            txtFecha.Text = DateTime.Now.ToString();
            txtPlazo.Text = "0";
            txtCosAud.Text = "0";
        }
        else
        {
            soa_SolicitudDesignacion beSol = new soa_SolicitudDesignacion();
            beSol = blSolic.Buscar_SolicitudDesignacion(txtCodigo.Text);
            if (beSol != null)
            {
                txtFecha.Text = beSol.dsde_FecSol.ToShortDateString();
                txtNombreEntAud.Text = beSol.csde_EntAud + " - " + blEnt.Buscar_Entidad(beSol.csde_EntAud).cent_Nombre;
                ddlTipAud.SelectedValue = beSol.cprm_TipAud;
                txtIniExa.Text = beSol.dsde_IniExa.ToShortDateString();
                txtFinExa.Text = beSol.dsde_FinExa.ToShortDateString();
                txtPlazo.Text = beSol.nsde_Plazo.ToString();
                txtCosAud.Text = beSol.nsde_CosTot.ToString();
                txtObjetivo.Text = beSol.csde_Objetivo;
                txtComentario.Text = beSol.csde_Comentario;
            }
        }
    }

    protected void imbConfirmGuardar_Click(object sender, ImageClickEventArgs e)
    {
        String cRpta = ValidarDatos();
        if (String.IsNullOrEmpty(cRpta))
        {
            modalPopupGuardar.Show();
            imbOK2_Click((object)sender, (ImageClickEventArgs)e);
        }
        else
        {
            lblMsjConfirm7.Text = cRpta;
            UpdatePanel7.Update();
            modalPopupInconsistencia.Show();
        }
    }

    private String ValidarDatos()
    {
        if (String.IsNullOrEmpty(txtNombreEntAud.Text))
        {
            return "Ingrese la entidad a auditar.";
        }
        if (ddlTipAud.SelectedValue == "0")
        {
            return "Seleccione el tipo de auditoría.";
        }
        if (String.IsNullOrEmpty(txtIniExa.Text))
        {
            return "Ingrese la fecha de inicio para el período de examinación.";
        }
        if (String.IsNullOrEmpty(txtIniExa.Text))
        {
            return "Ingrese la fecha de fin para el período de examinación.";
        }
        if (Int32.Parse(txtPlazo.Text) <= 0)
        {
            return "El monto a examinar debe ser mayor a 0.";
        }
        if (Int32.Parse(txtPlazo.Text) <= 0)
        {
            return "El costo de la auditoría debe ser mayor a 0.";
        }
        if (string.IsNullOrEmpty(txtObjetivo.Text))
        {
            return "Debe de registrar el/los objetivos de la auditoría";
        }
        if (blEnt.Buscar_Entidad(txtNombreEntAud.Text.Substring(0, 4)) == null)
        {
            return "La entidad no es válida.";
        }
        return "";
    }

    protected void imbConfirmCancelar_Click(object sender, ImageClickEventArgs e)
    {
        modalPopupCancel.Show();
    }

    // Cancelar operación
    protected void imbOK3_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect("SolicitudDesignacion_Listado.aspx");
    }

    // Guardar Operación
    protected void imbOK2_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            beSolic.csde_OrgAud = Session[Constantes.session_CodUniOrg].ToString();
            beSolic.csde_EntAud = txtNombreEntAud.Text.ToString().Substring(0, 4);
            beSolic.cprm_TipAud = ddlTipAud.SelectedValue;
            beSolic.dsde_IniExa = DateTime.Parse(txtIniExa.Text);
            beSolic.dsde_FinExa = DateTime.Parse(txtFinExa.Text);
            beSolic.nsde_CosTot = Int32.Parse(txtCosAud.Text);
            beSolic.nsde_Plazo = Int16.Parse(txtPlazo.Text);
            beSolic.csde_Objetivo = txtObjetivo.Text;
            beSolic.csde_Comentario = txtComentario.Text;
            beSolic.csde_UsuCre = Session[Constantes.session_CodUsuario].ToString();
            beSolic.cprm_Estado = "2301";
            beSolic.csde_Codigo = txtCodigo.Text;

            String[] cRpta;
            if (String.IsNullOrEmpty(txtCodigo.Text))
            {
                cRpta = blSolic.Insertar_SolicitudDesignacion(beSolic).Split('@');
            }
            else
            {
                cRpta = blSolic.Actualizar_SolicitudDesignacion(beSolic).Split('@');
            }

            if (cRpta[0] == "1") // Se guardó exitosamente
            {
                Response.Redirect("SolicitudDesignacion_Listado.aspx");
            }
            else
            {
                if (String.IsNullOrEmpty(cRpta[1]))
                {
                    lblMsj.Text = cRpta[1];
                }
                else
                {
                    lblMsj.Text = "Se produjo un error inesperado. Volver a intentar.";
                }
                lblMsj.ForeColor = System.Drawing.Color.Red;
                lblMsj.Visible = true;
            }
        }
        catch (Exception ex)
        {
            lblMsj.Text = "Se produjo un error al intentar guardar los datos, volver a intentar.";
            lblMsj.ForeColor = System.Drawing.Color.Red;
            lblMsj.Visible = true;
        }
    }

    [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
    public static string[] GetCompletionList(string prefixText, int count, string contextKey)
    {
        EntityConnectionSOA model = new EntityConnectionSOA();

        String[] arrLista;

        var lst = from lista in model.Sen_Entidad
                  where lista.cent_Codigo.Contains(prefixText) || lista.cent_Nombre.Contains(prefixText)
                  select lista.cent_Codigo + " - " + lista.cent_Nombre;

        arrLista = lst.ToArray<String>();

        return arrLista;
    }
}